#include <iostream>
#include <algorithm>

using namespace std;
// 541.反转字符串II
//给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。
//如果剩余字符少于 k 个，则将剩余字符全部反转。
//如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。

class Solution {
public:
    string reverseStr(string s, int k) {
        int n = s.size();
        for(int i = 0; i < n; i += 2*k) {
            if(n - i >= k) {    // 剩余字符个数大于等于k
                reverse(s.begin() + i,s.begin() + i + k); // 反转前k个字符
            } else {
                reverse(s.begin() + i,s.begin() + n);   // 反转剩余所有字符
            }
        }
        return s;
    }
};

int main() {
    cout << Solution().reverseStr("abcdefg", 2) << endl;
    return 0;
}
